import CipherBase from "../cipher-base";
import * as des from "../des/index.js";
import { inherits as inherits$0 } from "util";
var inherits = { inherits: inherits$0 }.inherits;
var modes = {
    'des-ede3-cbc': des.CBC.instantiate(des.EDE),
    'des-ede3': des.EDE,
    'des-ede-cbc': des.CBC.instantiate(des.EDE),
    'des-ede': des.EDE,
    'des-cbc': des.CBC.instantiate(des.DES),
    'des-ecb': des.DES
};
modes.des = modes['des-cbc'];
modes.des3 = modes['des-ede3-cbc'];
inherits(DES, CipherBase);
function DES(opts) {
    CipherBase.call(this);
    var modeName = opts.mode.toLowerCase();
    var mode = modes[modeName];
    var type;
    if (opts.decrypt) {
        type = 'decrypt';
    }
    else {
        type = 'encrypt';
    }
    var key = opts.key;
    if (!Buffer.isBuffer(key)) {
        key = Buffer.from(key);
    }
    if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {
        key = Buffer.concat([key, key.slice(0, 8)]);
    }
    var iv = opts.iv;
    if (!Buffer.isBuffer(iv)) {
        iv = Buffer.from(iv);
    }
    this._des = mode.create({
        key: key,
        iv: iv,
        type: type
    });
}
DES.prototype._update = function (data) {
    return Buffer.from(this._des.update(data));
};
DES.prototype._final = function () {
    return Buffer.from(this._des.final());
};
export default DES;
